home *** CD-ROM | disk | FTP | other *** search
/ Clipper Collection / Clipper Collection.iso / clipper7 / clipwind.arc / CLIPWIND.DOC < prev    next >
Text File  |  1988-08-09  |  89KB  |  2,021 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.         
  25.                              Windows For Clipper
  26.                              -------------------
  27.                      Copyright (C) 1986-1988 By Jim Holley
  28.                               All Rights Reserved
  29.                                1346 Woodington Cir.
  30.                              Lawrenceville Ga. 30245
  31.                                  (404)564-3647
  32.  
  33.  
  34.  
  35. Windows For Clipper
  36.  
  37.  
  38.  
  39.                             Trademarks and Concessions
  40.                             --------------------------
  41.                      Clipper is a Trademark of Nantucket Corp.
  42.                      Lattice is a Trademark of Lattice, Inc.
  43.                      Microsoft is a Trademark of Microsoft Corp.
  44.                      Desmet 'C'is a Trademark of C Ware Corp.
  45.                      Plink86 is a Trademark of Pheonix Software
  46.                                                Associates LTD.
  47.                      IBM is a Trademark of International Business
  48.                                            Machines.
  49.  
  50.  
  51.  
  52. Windows For Clipper 
  53.  
  54.  
  55.  
  56.                      SHAREWARE / NOT FREE SOFTWARE
  57.                      -----------------------------
  58.  
  59.      The  Windows For Clipper Library  is now  being  distributed  under the
  60.      Shareware Concept.   IT IS NOT FREE SOFTWARE.    A lot of hard work and
  61.      long  hours  have been  put into  developing   this  library  of window
  62.      routines. If you find this library of some  practical use in developing
  63.      your  applications, please REGISTER  your copy. If you don't find it of
  64.      use,  First, I'd like to know why. Second,  please do not use it in any
  65.      applications  that you develop.   I will trust in  your conscience as a 
  66.      fellow programmer and developer. In trying to stay with the true concept
  67.      of shareware (try it before you buy it), a decision was made to release
  68.      the  Windows For Clipper Library. I hope this decision will prove to be
  69.      a  wise  one.   This  is  a  full  working  version.  Not  a  demo. The
  70.      documentation  included on  disk is also  the complete reference to the
  71.      library.   There  are  no  gimmicks  or  tricks.  The  contents of this
  72.      distribution,  is  the  same as  the ordered version. If  you use these  
  73.      routines and don't register them, you deminish the concept of shareware,
  74.      and the programmer/developer community as whole. Shame on you! 
  75.      
  76.      A Registration Form May Be Found In The REGISTER.DOC File.
  77.  
  78.  
  79.      To All Bulletin Board Sysops and Users Groups:
  80.  
  81.      You may freely copy or make available for distribution, the Windows For
  82.      Clipper Library  package for  evaluation purposes.  However, no one may
  83.      modify any of the files that  are part of the  orignal package. You may
  84.      not sell, or otherwise profit  from this package. That is the exclusive
  85.      right of the author.  You may however,  charge a copy fee not to exceed
  86.      $7.00 to cover costs, such as diskettes etc.  This is the only fee that 
  87.      is allowable.  If you paid more than this allowable fee, please contact
  88.      the author. This provision applies ony to the  Bulletin Board and Users
  89.      Group Community.  All others organizations and distribution methods are
  90.      excluded and prohibited.
  91.  
  92.  
  93.  
  94.  
  95. Windows For Clipper 
  96.  
  97.  
  98.                               Copyright Notice.
  99.                               -----------------
  100.                 Copyright (C) 1986, 1987, 1988, By Jim Holley 
  101.                              All rights reserved.
  102.  
  103.  
  104.                           Limited License Agreement
  105.                           -------------------------
  106.  
  107.            Non registered users are granted a limited use license 
  108.         for evaluation purposes on a private Non commercial basis,
  109.         to determine if Windows For Clipper is suitable for your
  110.         use. If you regulary use Windows For Clipper, you must
  111.         register your copy. 
  112.  
  113.           This license does not apply to commercial businesses, 
  114.         institutions, or government agencies.  If the Windows For 
  115.         Clipper Library is used in this way, registration is required.
  116.  
  117.         Remember, if you use the functions in the Windows For Clipper
  118.         Library, you must register your copy. 
  119.  
  120.  
  121.                                   Disclaimer
  122.                                   ----------
  123.            The author(s) of this set of routines believe that they will
  124.         perform their stated purpose. No warranty of any kind, expressed
  125.         or implied, including without limitation, any warranties of 
  126.         merchantabillity and/or fitness for a particular purpose is made.
  127.         The author shall not be held liable for any damages to data, 
  128.         property, lost profits, lost savings, or other incidental or
  129.         consequential damages, whether direct, indirect, or special, arising
  130.         out of your use or inability to use these routines. 
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  Windows For Clipper
  137.  
  138.  
  139. This version of Windows For Clipper is for the Summer '87 version of the
  140. Clipper Compiler.
  141.  
  142. All code with the exception of the WN_DBF(), WNSAVE(), and WNRESTORE()
  143. functions are written in MicroSoft 'C' Ver. 5.0 and Microsoft's Macro 
  144. Assembler Ver 5.0. They are all a combination of Clipper, 'C', and 
  145. assembler code.
  146.  
  147.  
  148.  
  149.  
  150. Windows For Clipper  
  151.  
  152.  
  153.  
  154.                        Table Of Contents
  155.                        -----------------
  156.  
  157.                                                 Page
  158.  
  159.    1. Introduction ____________________________ 1
  160.  
  161.    2. Limitations _____________________________ 2
  162.  
  163.    3. Installing the Library __________________ 3
  164.  
  165.    4. Link Phase ______________________________ 4
  166.  
  167.    5. Technical Information ___________________ 5
  168.  
  169.    6. Reserved Words ___________________________6
  170.  
  171.    7. Library Reference _______________________ 7
  172.  
  173.                 Control & Initialization
  174.         _SINIT_WN()............................  8
  175.         _SST_WNCL()............................ 11
  176.         _SST_WNBC()............................ 12
  177.         _SST_PTSL()............................ 13
  178.         _SST_PTCL()............................ 14
  179.         _SST_UBIOS()........................... 15
  180.         _SWNCHG().............................. 13
  181.         _SMOVE_WN()............................ 14
  182.         _SREM_WN()............................. 15
  183.         _SWN_ROW()............................. 16
  184.         _SWN_COL()............................. 17
  185.  
  186.                    Input & Output
  187.         _SWNPUTCH()............................ 21
  188.         _SWNGETCH()............................ 22
  189.         _SDRW_ROW()............................ 23
  190.         _SDRW_WN()............................. 24
  191.         _SWTE_TXT()............................ 25
  192.         _SWTE_RECS()........................... 26
  193.         _SWTE_PTR()............................ 28
  194.         _SCLS_WN()............................. 30
  195.         _SCRL_VERT()........................... 31
  196.         _SCRL_HORZ()........................... 32
  197.         _SWNERASE()............................ 33
  198.         _WNSAVE().............................. 34
  199.         _WNRESTORE()........................... 35
  200.         _WNGETBUF()............................ 36
  201.         _WNPUTBUF()............................ 37
  202.         _WN_DBF().............................. 38
  203.  
  204.                    Other Functions
  205.         _BIGSTR().............................. 43
  206.         _NEWCOLOR()............................ 45
  207.  
  208.  
  209.  
  210.  Windows For Clipper                                               Page 1
  211.  
  212.  
  213.                                 Introduction
  214.                                 ------------
  215.  
  216.  
  217.  
  218.  
  219.            Welcome to Windows for Clipper, a comprehensive set of window
  220.         routines written especially for the Clipper programmer and Clipper
  221.         Compiler.  These routines provide all the basics for creating and
  222.         manipulating windows in the Clipper programming environment. Also
  223.         included are other video functions you may find useful. 
  224.  
  225.            Windows For Clipper has been in use for over a year now by such
  226.         companies or organizations as
  227.  
  228.                         The Library Of Congress
  229.                         University Of Utah
  230.                         Scientific Atlanta
  231.                         Southern Methodist University
  232.                         Dr. Jay Sprenger
  233.                         Micro Business Services
  234.                         dConsultant Systems
  235.  
  236.         and many more. It is a proven, solid library. A Remote Bulletin Board
  237.         service has been set up so that Windows For Clipper users can get 
  238.         support for the library, leave examples of code that others may find
  239.         useful, and to discuss the Clipper compiler in general. The bulletin
  240.         board is a restricted access board. You will be provided the number
  241.         to call when you register your copy of the library.
  242.  
  243.            
  244.            The demo that comes with this package shows how easy it is
  245.         to access the window functions. No special tricks or requirements
  246.         are needed.  You write code as you normally would for any of the 
  247.         Clipper internal functions or your own User Defined Functions.
  248.         No memory resident program needs to be loaded so that your program
  249.         functions properly. It is all built into the program during the
  250.         link phase. The only thing you need to learn are the function
  251.         names and what they do.
  252.  
  253.  
  254.  
  255.   Windows For Clipper                                               Page 2
  256.  
  257.  
  258.                                Limitations
  259.                                -----------
  260.  
  261.  
  262.  
  263.  
  264.        The window functions have the following limitations:
  265.  
  266.  
  267.        1. Minimum ram required.................................1.5k (or 1048
  268.           bytes) This requirement is set even if a window is never created.
  269.  
  270.  
  271.        2. Maximum ram required.................................?????
  272.           This is totally dependent on the number and dimensions of the
  273.           windows that are being created in a program. Due to this, it
  274.           it can not be stated exactly.
  275.  
  276.  
  277.        3. Maximum number of windows allowed....................256
  278.           Naturally, depending on the dimensions of the window and
  279.           the amount of ram installed on the computer, the maximum
  280.           number may be less.
  281.  
  282.  
  283.        4. Maximum window size..................................Full Screen
  284.  
  285.        5. Minimum window size.................................3 col. by 3 rows
  286.           Minimum size is due to the requirement of a border for all windows.
  287.           Note, a 3 by 3 window will leave no room for text to be written.
  288.  
  289.  
  290.  
  291.   Windows For Clipper                                               Page 3
  292.  
  293.  
  294.                                 Installation
  295.                                 ------------
  296.  
  297.  
  298.  
  299.  
  300.            The first step you should take is MAKE A BACKUP COPY. Place
  301.         the backup in a safe place in case you need it again.
  302.  
  303.            Installation of the library is simple and straight forward.
  304.         Depending on the system configuration, do one of the following:
  305.  
  306.  
  307.  
  308.                         If you have a floppy based system:
  309.                         ----------------------------------
  310.  
  311.         Locate the diskette that contains the CLIPPER.LIB file. Copy
  312.         the CLIPWIND.LIB file to this diskette. If there is not enough
  313.         room on the disk for all of your libraries, you may put the 
  314.         Windows For Clipper Library on a separate disk. Refer to your
  315.         linker manual to determine how to do this.
  316.  
  317.  
  318.                         If you have a hard disk system:
  319.                         -------------------------------
  320.  
  321.         Determine which directory contains the CLIPPER.LIB file. Copy
  322.         the CLIPWIND.LIB file to the same directory.
  323.  
  324.  
  325.  
  326.   Windows For Clipper                                               Page 4
  327.  
  328.  
  329.                                 Link Phase
  330.                                 ----------
  331.  
  332.  
  333.  
  334.  
  335.            The link phase is that portion of development where you invoke
  336.         a linker to create the executable version of your program. Before
  337.         you start to worry, the Windows For Clipper system requires nothing
  338.         special other than specifying the library on the link line. For
  339.         example:
  340.  
  341.  
  342.  
  343.  
  344.         Plink86        Example
  345.  
  346.         PLINK86 FILE WDEMO, CURSOR LIBRARY CLIPPER, CLIPWIND
  347.                 ^-----------------^ ^-----------------------^
  348.                         |                      |
  349.         Indicate the object files to link      |
  350.                                                |
  351.         Indicate the libraries to be used during the link phase.
  352.  
  353.  
  354.         Link.exe Example
  355.         LINK WDEMO CURSOR,, CLIPPER CLIPWIND
  356.  
  357.  
  358.            The link structure may be as simple or complex as required.
  359.         The only thing required is the CLIPWIND library in the link
  360.         command used to invoke your linker.
  361.  
  362.            Included with the CLIPPER compiler are 2 batch files. These
  363.         batch files, CL.BAT and CLD.BAT,  are used to help compile and
  364.         link your applications. Also included with Windows For Clipper 
  365.         are 2 batch files, CLWIND.BAT and CLDWIND.BAT. These were created
  366.         to replace the batch files included with the compiler. If you
  367.         currently use the aforementioned batch files, you may want to 
  368.         use those included with Windows For Clipper instead.
  369.  
  370.            There is also a batch file named PL2.BAT. This example file 
  371.         illustrates how to create batch files for linking using the PLINK86
  372.         linkage editor. It is fully functional and can be used if you do 
  373.         not wish to compile and link under control of a single batch file. 
  374.  
  375.  
  376.  
  377.   Windows For Clipper                                               Page 5
  378.  
  379.  
  380.                          Technical Information
  381.                          ---------------------
  382.  
  383.            The Windows For Clipper routines support PC/MS - DOS for the
  384.         IBM PC/XT/AT and 100% compatible computers. Some clones may or 
  385.         may not function properly, depending on the compatibility of the
  386.         clone. The Windows For Clipper functions use DMA, or the standard
  387.         BIOS interrupt call 10 hex. Any machine that does not support the 
  388.         IBM video addressing scheme or interrupt 10 hex will not work
  389.         properly. It stands to reason, any machine that will execute a
  390.         Clipper application will also execute the Windows For Clipper 
  391.         routines without problems.
  392.  
  393.  
  394.                         Compatibility Notes
  395.  
  396.            The Windows For Clipper functions will run on any IBM PC/XT/AT
  397.         or 100 % compatibles. Since the new IBM PS/2 was not available to me,
  398.         I can not state that it is 100 % compatible with this machine.
  399.         Compatibility with this machine should not be a problem. As soon as 
  400.         this information becomes available, it will be documented. 
  401.            
  402.            Windows For Clipper has been tested on, and found compatible 
  403.         with the following:
  404.  
  405.         Novell Advanced Netware Ver. 2.0A
  406.         Various LIM Standard extended memory cards including the Intel
  407.         AboveBoard, and Talltree Systems Jram3 and Jram AT3.
  408.         Various Expanded Memory cards including the Quadram Quadboard.
  409.  
  410.            Thanks are in order for Mr. Paul Leo and his staff at the 
  411.         University of Utah, for there exhaustive testing of the Windows
  412.         For Clipper System. 
  413.  
  414.  
  415.   Windows For Clipper                                               Page 6
  416.  
  417.  
  418.  
  419.                                 Reserved Words                                
  420.                                 --------------
  421.  
  422.  
  423.            The following is a list of reserved words in the Windows For
  424.         Clipper package. Please refrain from using any of these names. 
  425.         If you encounter a type conflict error during a program run, 
  426.         check your field and variable names to be sure you are not using
  427.         one of these reserved words.
  428.  
  429.         _SINIT_WN       _SST_WNCL       _SST_WNBC       _SWNCHG
  430.         _SST_PTCL       _SST_PTSL       _SST_UBIOS      _BIGSTR   
  431.         _SMOVE_WN       _SREM_WN        _SWNPUTCH       _SWNGETCH
  432.         _SDRW_ROW       _SDRW_WN        _SWTE_TXT       _SWTE_RECS
  433.         _SCLS_WN        _SCRL_VERT      _SCRL_HORZ      _SWNERASE
  434.         _WN_DBF         _VIDSUP         _SWN_ROW        _SWN_COL
  435.         _WNSAVE         _WNRESTORE      _WNGETBUF       _WNPUTBUF
  436.         _NEWCOLOR       WNZ             WN_ZFLD1        WN_ZFLD2
  437.         WN_ZFLD3        WN_ZFLD4        WN_ZFLD5        WN_ZFLD6
  438.         WN_ZFLD7        WN_ZFLD8        WN_ZFLD9        WN_ZFLD10
  439.         WN_ZUP          WN_ZDOWN        WN_ZLEFT        WN_ZRIGHT
  440.         WN_ZESC         WN_ZCR          WN_ZNUMROW      WN_ZKEY
  441.         WN_ZOFFSET      WN_ZSCRL        WN_ZTREC        WN_ZCNT
  442.         WN_ZTRSH        WN_ZLINDEX      WN_ZREC         WN_ZF1
  443.         WN_ZF2          WN_ZF3          WN_ZF4          WN_ZF5
  444.         WN_ZF6          WN_ZF7          WN_ZF8          WN_ZF9
  445.         WN_ZF10         WN_ZFLEN        WN_ZHOME        WN_ZEND
  446.         WN_ZCHOME       WN_ZCEND        WN_ZPGUP        WN_ZPGDN
  447.         ZZNROWS         ZZNCOLS         ZZSAVBUF        ZZSAVEWN
  448.         ZZMEMNAM
  449.  
  450.  
  451.  
  452.   Windows For Clipper                                               Page 7
  453.  
  454.  
  455.                            Library Reference
  456.                            -----------------
  457.  
  458.  
  459.  
  460.  
  461.                       List of function calling syntax,
  462.                       synopsis, and return values for
  463.                       the Clipper window routines.
  464.                       --------------------------------
  465.  
  466. ==============================================================================
  467.                           Notational Conventions
  468.  
  469. NOTE: Conventions used in this reference are as        follows:
  470.  
  471.       TRUE  -  Logical True (.T.)
  472.      FALSE  -  Logical False (.F.)
  473.         []  -  Anything enclosed in brackets is optional.
  474.        ...  -  Ellipses following an item indicate that more
  475.                items having the form may appear.
  476.          ^  -  Is used to indicate points of interest in example code.
  477.                Also may indicate the use of the control (CTRL) key. 
  478. ==============================================================================
  479.  
  480.  
  481.  
  482.   Windows For Clipper                                               Page 8
  483.  
  484.  
  485.                     Initialization and Control Functions
  486. -----------------------------------------------------------------------------
  487.  
  488. _SINIT_WN(starting column, starting row, number of columns, number of rows)
  489.  
  490. Synopsis       This is the core of the window functions. It is responsible
  491.                for setting up the requirements of the window system as well
  492.                setting up and maintaining the request for window creation
  493.                from the programmer. What follows is a technical description
  494.                of what this function does, as well as descriptions of the
  495.                windows created and functions provided, with the window system.
  496.                If you are not technically oriented, inclined or just plain
  497.                uninterested in the technical aspect, you should still skim
  498.                over the information below. It provides some very important
  499.                information about this window system.
  500.  
  501.                   On the first, and only the first, call to this module, 3
  502.                arrays are initialized. An array of pointers, an array of
  503.                of color values, and an array of color codes. The memory 
  504.                required to establish the arrays is allocated whether you
  505.                call a window function or not. All of the arrays are accessible
  506.                to any of the window functions that require the data stored in
  507.                them. 
  508.  
  509.                  The array of pointers consists of 256 elements, effectively
  510.                giving the programmer 256 windows to work with and manipulate.
  511.                All elements in the array are initialized to 0. As stated, this
  512.                is an array of pointers. I am stressing this point because the
  513.                initialization that takes place points every element in the 
  514.                array to the interrupt vector table in the computer. This is
  515.                an area that only the brave should play around with. Any 
  516.                element that is set to 0 should be avoided. In a Clipper 
  517.                application, the calls to the window functions should only use
  518.                the number returned by this function. If you use a number that
  519.                was not provided by this function, you take the chance of
  520.                writing information into the interupt vector table. This will
  521.                reek havoc in your application, causing all kinds of strange
  522.                things to happen. 
  523.  
  524.                This brings up a couple of questions. First, why is an array
  525.                necessary? And second, why set the value to 0 if it may cause
  526.                trouble? The answer lies in dynamic memory allocation and
  527.                a pointer variables value. The window routines were designed
  528.                from the beginning to allow multiple windows, and to use as
  529.                little RAM as possible. It would be a very simple task to
  530.                eliminate the array if one could pass pointer values back and
  531.                forth from the window functions to the Clipper application. As
  532.                far as I know, it can't be done. This brought on the need for
  533.                the array. The array is now used to store the pointer value.
  534.                The value returned to the Clipper application is the offset
  535.                value into the array that stores the pointer value.
  536.  
  537.  
  538.   Windows For Clipper                                               Page 9
  539.  
  540.  
  541.  
  542.                   Second question. All memory required for any given window is
  543.                allocated dynamically. Any arbitrary number could have been
  544.                selected to initialize the array, but chances are, the number
  545.                selected could have been the same as the number returned by
  546.                the memory allocation routines. Obviously, this would not be
  547.                acceptable. The memory allocation routines return a 0 if the
  548.                requested memory could not be allocated. So if an element in
  549.                the array has a value of 0, it is not a valid pointer to a
  550.                window control block structure and should not be accessed. On
  551.                the other hand, if the allocation was successful, the pointer
  552.                value is placed in the array and the value returned to the
  553.                Clipper application corresponds to it's position in the array.
  554.  
  555.                As stated, memory is allocated dynamically when needed. When
  556.                the memory is no longer needed, it is released back into the
  557.                free memory pool. Therefore, if a window does not exist, it
  558.                does not require any RAM. Once a window is initialized, it 
  559.                does require RAM, and will keep the RAM allocated to it as
  560.                long as the window exists. The RAM requirements for each
  561.                window created are as follows:
  562.  
  563.                1024  Bytes approximate for the array of pointers.
  564.                  24  Bytes used store the color and color code tables.
  565.                  38  Bytes for the window control block structure.
  566.                buffer = (number of columns * number of rows) * 2.
  567.  
  568.                The first item above is overhead. The array is manditory, and is
  569.                constant. Memory for the array is allocated whether the window
  570.                routines are used or not. The 30 bytes and buffer space are
  571.                allocated each time a window is created. The memory allocated
  572.                is constant as long as the window exists. If a window is
  573.                removed the 30 bytes, and the bytes allocated for the buffer
  574.                space, are released back to the free memory pool and can be used
  575.                again.
  576.  
  577.                The buffer space is needed to store the information currently
  578.                on the screen in the area the window will occupy.
  579.  
  580.  
  581.  
  582.   Windows For Clipper                                               Page 10
  583.  
  584.  
  585.  
  586.                If the window move function is called, memory is allocated for
  587.                another buffer of the same buffer size required by the window
  588.                itself.
  589.  
  590.                The above memory requirements are provided for those programmers
  591.                who insist on writing mammoth applications and must keep a
  592.                careful watch on the applications memory usage.
  593.  
  594.  
  595. Arguments
  596.       starting column - Column offset the upper left corner of the window
  597.                         should start at. Values range from 0 to 79.
  598.  
  599.          starting row - Row offset the upper left corner of the window
  600.                         should start at. Values range from 0 to 24.
  601.  
  602.     number of columns - The number of columns the window will occupy. Values
  603.                         range from 0 to 79.
  604.  
  605.        number of rows - The number of rows the window will occupy. Values
  606.                         range from 0 to 24.
  607.  
  608. Returns Value > 0     - If memory allocation and window initialization
  609.                         were successful. This value corresponds to the
  610.                         window control blocks structure position in the
  611.                         array.
  612.  
  613.                     0 - If memory could not be allocated, or invalid
  614.                         parameters were passed to the function.
  615.  
  616.  
  617.  
  618.  Windows For Clipper                                               Page 11 
  619.  
  620.  
  621. _SST_WNCL(window, color code string, where)
  622.  
  623. Synopsis       This function allows the setting of color in a window.
  624.                A color value can be established for the window border
  625.                or window contents. The default color value is a black
  626.                background and white foreground.
  627.  
  628. Arguments
  629.                window - Window number returned by the _SINIT_WN() function.
  630.  
  631.     Color code string - Character variable containing a string representing
  632.                         the color code. The color code string takes the
  633.                         following form.
  634.                             <background/foreground/intensity/blinking>
  635.                         You may use any character to separate the
  636.                         color code string, but a slash is recommended.
  637.  
  638.                         The following are the codes used for color selection.
  639.  
  640.                                  A        ==        BLACK
  641.                                  B        ==        BLUE
  642.                                  G        ==        GREEN
  643.                                  C        ==        CYAN
  644.                                  R        ==        RED
  645.                                  M        ==        MAGENTA
  646.                                  O        ==        BROWN
  647.                                  W        ==        WHITE
  648.                                  L        ==        BLINKING
  649.                                  H        ==        HIGH INTENSITY
  650.  
  651.                         You may use upper case or lower case or any
  652.                         combination of the 2.
  653.                               EXAMPLE 1          "b/o/h/l"
  654.                                                   | | | |
  655.                          Blue Background ---------| | | |-------- Blinking
  656.                          Brown Foreground ----------| |---------High Intensity
  657.  
  658.                                 EXAMPLE 2         "b/r//"
  659.                                                    | |    High Intensity not
  660.                           Blue Background ---------| |    specified.
  661.                         Red Foreground   ------------|    No Blinking specified
  662.  
  663.                  where   - Character indicating where to change the color.
  664.                            Two (2) areas are available. The border, and the
  665.                            contents. "Where" must be a single character that is
  666.                            equal to a (b) for border or (c) for contents and
  667.                            can be either upper and/or lower case.
  668.  
  669.  
  670. Returns           TRUE   - If the color was changed successfully.
  671.  
  672.                  FALSE   - If the color could not be set. If this occurs, it
  673.                            is usually because the function received invalid
  674.                            arguments.
  675.  
  676.  
  677.  
  678.   Windows For Clipper                                               Page 12 
  679.  
  680.  
  681.  
  682. _SST_WNBC(window, border character)
  683.  
  684. Synopsis       This function allows the setting of a border character for a
  685.                window. This character can be any of the printable characters
  686.                in the PC's character set. Four (4) characters are special to
  687.                the window borders. They are the upper left corner single, 
  688.                upper left corner double, upper left  corner single top/double
  689.                side, and the upper left corner double top/single side line
  690.                graphics characters. These can be visually display by entering
  691.                the following command at the dot prompt:
  692.  
  693.                    ? CHR(218)  ==   ┌    or in basic     ? CHR$(218)
  694.                    ? CHR(201)  ==   ╔                    ? CHR$(201)
  695.                    ? CHR(213)  ==   ╒                    ? CHR$(213)
  696.                    ? CHR(214)  ==   ╓                    ? CHR$(214)
  697.  
  698.                   If one of these characters is detected, a single, double
  699.                single side/double top, or double top/single sided graphic box
  700.                will border the window. At the current time any other
  701.                character is taken literally, and will be used for the corners,
  702.                top, bottom, and sides of the window.
  703.  
  704.                   This function will obey the video access method selected.
  705.               
  706. Arguments
  707.                window  - Window number returned by the _SINIT_WN() function.
  708.  
  709.      border character  - The ascii value of the character that is to be used
  710.                          as the border character. The CHR() function should
  711.                          not be used as in the example above. Simply provide
  712.                          the ascii number for the border character. The 
  713.                          reason this method of character selection was chosen
  714.                          was because not all editors allow entry of all the
  715.                          characters in the PC's character set, even some of
  716.                          the very expensive, feature rich editors on the 
  717.                          market. And (here's the important one), it is easier
  718.                          to deal with characters and associated attributes
  719.                          as numbers, and not characters. Cheating on my part.
  720.                          Please forgive!
  721.  
  722.                                    Example 1.  _SST_WNBC(window,218)
  723.                                This will create a single line graphics
  724.                                border around the window.
  725.  
  726.                                    Example 2.  _SST_WNBC(window,201)
  727.                                This will create a double line graphics
  728.                                border around the window.
  729.  
  730. Returns          TRUE   - If function was successfully.
  731.  
  732.                 FALSE   - If the function was unsuccessful. If this occurs,
  733.                           it is because the function received invalid
  734.                           arguments.
  735.  
  736.  
  737.  
  738.    Windows For Clipper                                               Page 13
  739.  
  740.  
  741. _SST_PTSL(window, pointer type)
  742.  
  743. Synopsis       This function will select the pointer type to be written
  744.                by the _SWTE_PTR() and _WN_DBF() functions. Two pointer types
  745.                are available, type 1 and type 2.
  746.  
  747.                Type 1 is an arrow that points to the right and is placed in
  748.                first 2 columns of a window. Please refer to the _SWTE_PTR()
  749.                reference for more information.
  750.  
  751.  
  752.  
  753.                Type 2 is a bounce bar type pointer and is the default. This
  754.                pointer spans the entire length of the window.
  755.            
  756.  
  757.  
  758.                The pointer colors can be selected using the _SST_PTCL()
  759.                function. If a type 2 pointer is used, you should select a
  760.                contrasting color to that which you have specified in the
  761.                window. 
  762.  
  763. Arguments
  764.                window  - Window number returned by the _SINIT_WN() function.
  765.                
  766.           pointer type - 1 or 2. This indicates the pointer type to use. 
  767.                          This value will be used by the _SWTE_PTR() function.
  768.  
  769. Returns           TRUE - If pointer type selection is successful.
  770.  
  771.                  FALSE - If pointer type selection is not successful. This
  772.                          will occur if an invalid argument is received by the
  773.                          function.
  774.  
  775.  
  776.  
  777.    Windows For Clipper                                               Page 14
  778.  
  779.  
  780. _SST_PTCL(window, color code string)
  781.  
  782. Synopsis       This function allows the setting of the pointer color written
  783.                by the _SWTE_PTR() function. This color should contrast the 
  784.                color which is set in the window.
  785.                
  786. Arguments
  787.               window  - Window number returned by the _SINIT_WN() function.
  788.                
  789.     color code string - Character variable containing a string representing
  790.                         the color code. The color code string takes the
  791.                         following form.
  792.                             <background/foreground/intensity/blinking>
  793.                         You may use any character to separate the
  794.                         color code string, but a slash is recommended.
  795.  
  796.                         The following are the codes used for color selection.
  797.  
  798.                                  A        ==        BLACK
  799.                                  B        ==        BLUE
  800.                                  G        ==        GREEN
  801.                                  C        ==        CYAN
  802.                                  R        ==        RED
  803.                                  M        ==        MAGENTA
  804.                                  O        ==        BROWN
  805.                                  W        ==        WHITE
  806.                                  L        ==        BLINKING
  807.                                  H        ==        HIGH INTENSITY
  808.  
  809.                Please refer to the _SST_WNCL() function for an example of 
  810.                specifying the color code string. 
  811.  
  812. Returns           TRUE - If pointer color selection is successful.
  813.  
  814.                  FALSE - If pointer color selection is not successful. This
  815.                          will occur if an invalid argument is received by the
  816.                          function.
  817.  
  818.  
  819.  
  820.    Windows For Clipper                                               Page 15
  821.  
  822.  
  823. _SST_UBIOS(window, logical true or false)
  824.  
  825. Synopsis       This function sets the video access method used for all  
  826.                read/write operations performed in a window. Each window
  827.                is treated as a separate entity. This provides more control 
  828.                to the programmer as to the video access method used in 
  829.                each window. The video access methods available are BIOS
  830.                and Direct Memory Access.
  831.  
  832.                Some computers may not function correctly if Direct Memory
  833.                Access (DMA) is used. For this reason, the window read/write
  834.                functions can use an alternate method. If the computer is 
  835.                not 100% IBM compatible, even the alternate method will fail.
  836.                Please test these functions on the machine that runs the 
  837.                application to be sure they work correctly.
  838.  
  839. Arguments
  840.               window  - Window number returned by the _SINIT_WN() function.
  841.  
  842.        logical value  - TRUE, will select the BIOS method.
  843.                         FALSE, will select Direct Memory Access. This is the
  844.                         default method used.
  845.  
  846. Return           TRUE - If the video access method was selected successfully.
  847.  
  848.                 FALSE - If the video access method was selected was 
  849.                         unsuccessful. This usually occurs due to invalid 
  850.                         arguments being passed to the function.
  851.  
  852.  
  853.  
  854.  
  855.  
  856.    Windows For Clipper                                               Page 16
  857.  
  858.  
  859. _SWNCHG(window, new width, new height)
  860.  
  861. Synopsis       This function changes the width and height of a window.
  862.                If you specify a window of 30 columns, and 10 rows, you
  863.                can change these dimensions with this function to 40 columns
  864.                and 15 rows. The window that is being changed can not be on
  865.                the screen. You must use the swnerase function to erase
  866.                the window from the screen. The new dimensions will appear
  867.                when the window is drawn on the screen. Please note that
  868.                this does not change the starting column and row coordinates.
  869.                Care must be taken to prevent specifying a window that will
  870.                exceed the column and row coordinates of the screen because
  871.                the new coordinates are not checked.
  872.  
  873. Arguments
  874.                window   - Window number returned by the _SINIT_WN() function.
  875.  
  876.             new width   - New number of columns occupied by the window.
  877.  
  878.            new height   - New number of rows occupied by the window.
  879.  
  880. Returns          TRUE   - If the window change was successful.
  881.  
  882.                 FALSE   - If the window change was unsuccessful. If this
  883.                           occurs, it is because the function received invalid
  884.                           arguments.
  885.  
  886.  
  887.  
  888.   Windows For Clipper                                               Page 17
  889.  
  890.  
  891. _SMOVE_WN(window, new column, new row)
  892.  
  893. Synopsis       This function will restore the text that was originally on
  894.                the screen and move the window to the new coordinates. To
  895.                do this, the function attempts to create a buffer by
  896.                allocating memory. The buffer will store the contents of
  897.                the target window. If memory is not available for this
  898.                buffer, the window will not be moved.
  899.  
  900.                This function will obey the video access method selected.
  901.  
  902. Arguments
  903.                window   - Window number returned by the _SINIT_WN() function.
  904.  
  905.            new column   - New column offset for the upper left corner
  906.                           of the window.
  907.  
  908.               new row   - New row offset for the upper left corner of the
  909.                           window.
  910.  
  911. Returns          TRUE   - If the window was moved successfully.
  912.  
  913.                 FALSE   - If the window move was unsuccessful. This
  914.                           occurs because the function received invalid
  915.                           arguments.
  916.  
  917.  
  918.  
  919.  
  920.   Windows For Clipper                                               Page 18
  921.  
  922.  
  923. _SREM_WN(window)
  924.  
  925. Synopsis       This function removes a window from the screen, restores the
  926.                text that was on the screen prior to placing the window on
  927.                the screen, and releases memory allocated, back to the free
  928.                memory pool. On return from this function, the window no
  929.                longer exists. If stacked (tiled) windows are on the screen,
  930.                the last window drawn must be the first window removed. All
  931.                subsequent removes must be done in the same manner.
  932.  
  933.                This function will obey the video access method selected
  934.  
  935. Arguments
  936.                window - Window number returned by the _SINIT_WN() function.
  937.  
  938. Returns          TRUE - If succesful in releasing memory, and restoring
  939.                         orginal screen contents.
  940.  
  941.                 FALSE - If window was not successfully removed. This
  942.                         occurs because the function received
  943.                         invalid arguments.
  944.  
  945.  
  946.  
  947.  
  948.  
  949.   Windows For Clipper                                               Page 19
  950.  
  951.  
  952. _SWN_ROW(window)
  953.  
  954. Synopsis       This function determines the number of rows available for   
  955.                writing in the specified window. 
  956.  
  957. Arguments
  958.                window - Window number returned by the _SINIT_WN() function.
  959.  
  960. Returns               - The number of rows available for writing.
  961.                         Or 0, if an invalid argument is received.
  962.                         
  963.  
  964.  
  965.  
  966.  
  967.   Windows For Clipper                                               Page 20
  968.  
  969.  
  970. _SWN_COL(window)
  971.  
  972. Synopsis       This function determines the number of columns available for   
  973.                writing in the specified window. 
  974.  
  975. Arguments
  976.                window - Window number returned by the _SINIT_WN() function.
  977.  
  978. Returns               - The number of columns available for writing.
  979.                         Or 0, if an invalid argument is received.
  980.                         
  981.  
  982.  
  983.   Windows For Clipper                                               Page 21
  984.  
  985.  
  986.                      Input & Output Functions
  987.                      ------------------------
  988.  
  989.  
  990.  
  991.  
  992. _SWNPUTCH(window, column, row, character)
  993.  
  994. Synopsis       This function provides the means to directly write any
  995.                character to a window. If color has been set in the
  996.                window, the character will be written using the same
  997.                color attribute.
  998.  
  999.                This function will obey the video access methdo selected.
  1000.  
  1001. Arguments
  1002.                window - Window number returned by the _SINIT_WN() function.
  1003.  
  1004.                column - The column location a character is to
  1005.                         be written to. The columns are relative to
  1006.                         the window dimensions. Column 0 represents
  1007.                         the first available column for writing within
  1008.                         a window.
  1009.  
  1010.                   row - The row location a character is to be
  1011.                         written to. The rows are relative to the
  1012.                         window dimensions. Row 0 represents the first
  1013.                         available row for writing within a window.
  1014.  
  1015.             character - The character to be written in the specified
  1016.                         column row coordinates.
  1017.  
  1018. Returns          TRUE - If the function was successful in writing
  1019.                         the character.
  1020.  
  1021.                 FALSE - If the function was unsuccessful in writing
  1022.                         the character.
  1023.  
  1024.  
  1025.  
  1026.   Windows For Clipper                                               Page 22
  1027.  
  1028.  
  1029. _SWNGETCH(window, column, row)
  1030.  
  1031. Synopsis       This functions provides the means to directly read any
  1032.                character in a window. If a variable is to receive the
  1033.                character read, it must be initialized to a single space
  1034.                prior to calling this function. This function cannot create
  1035.                variables that are to be used by a Clipper application. Failure
  1036.                to initialize the target variable will make the function appear
  1037.                to have failed. This function should not be confused with the 
  1038.                READ command in Clipper. This function does not get input from
  1039.                a user. The function will read an existing character in the
  1040.                window only. 
  1041.  
  1042.                This function will obey the video access method selected. 
  1043.  
  1044. Arguments
  1045.                window - Window number returned by the _SINIT_WN() function.
  1046.  
  1047.                column - The column location a character is to
  1048.                         be read from. The columns are relative to
  1049.                         the window dimensions. That is, column 0
  1050.                         represents the first writable column in a
  1051.                         window.
  1052.  
  1053.                   row - The row location a character is to be
  1054.                         written to. The rows are relative to the
  1055.                         window dimensions. That is, row 0 represents
  1056.                         the first writable row in a window.
  1057.  
  1058. Return                - This function returns the character read at the
  1059.                         specified coordinates.
  1060.  
  1061.  
  1062.  
  1063.   Windows For Clipper                                               Page 23
  1064.  
  1065.  
  1066. _SDRW_ROW(column, row, number of times, character [, video access method])
  1067.  
  1068. Synopsis       This function provides a quick and easy way to write a
  1069.                specified character a specified number of times to the
  1070.                screen. It is not restricted to a window. You may use
  1071.                this function to write to any location on the screen.
  1072.                It can be used to subdivide a window quickly and with
  1073.                little coding. It is functionally equivalent to the
  1074.                dBASE/Clipper command:
  1075.  
  1076.                @ row,col SAY REPLICATE(character, number of times)
  1077.  
  1078.                This function allows a video access method to be selected 
  1079.                as one of the arguments. The VDM is not mandatory.
  1080.  
  1081.  Arguments
  1082.                column - The starting column where the character is to be
  1083.                         written.
  1084.  
  1085.                   row - The starting row where the character is to be
  1086.                         written.
  1087.  
  1088.       number of times - The number of times the character is to be written.
  1089.  
  1090.             character - The character to write.
  1091.  
  1092.   Video Access Method - A character indicating the VDM to use. A "D" will
  1093.                         result in Direct Memory Access (DMA), any other
  1094.                         character will result in a BIOS call. If not
  1095.                         specified, the result will be a BIOS call.
  1096.  
  1097. Returns          TRUE - If the functions was successful.
  1098.  
  1099.                 FALSE - If the function was unsuccessful. If this occurs,
  1100.                         it is because the function received invalid
  1101.                         arguments.
  1102.  
  1103.  
  1104.   Windows For Clipper                                               Page 24
  1105.  
  1106.  
  1107. _SDRW_WN(window)
  1108.  
  1109. Synopsis       This function actually draws the window on the screen. You
  1110.                may create any number of windows in your application, but
  1111.                they do not appear on the screen until this function is
  1112.                called. The window drawn occupies the following area:
  1113.  
  1114.                starting column, starting row
  1115.                number of columns + 2, number of rows + 2
  1116.  
  1117.                When a call is placed to the _SINIT_WN() function with the
  1118.                following parameters:
  1119.  
  1120.                      _SINIT_WN(10,5,30,10)
  1121.  
  1122.                a window is drawn with the upper left corner starting at
  1123.                column 10, row 5, and the lower right corner ending at
  1124.                column 42, row 17.
  1125.  
  1126.                As can be seen, the actual window occupies an area slightly
  1127.                larger than what was specified. The inside portion of the
  1128.                window area is available for writing. This area has the number
  1129.                of columns and rows which were specified. You cannot write text
  1130.                on the border area of the window when using the window output
  1131.                functions. The area available for writing is cleared.
  1132.  
  1133.                This function will obey the video access method selected.
  1134.  
  1135. Arguments
  1136.                window - Window number returned by the _SINIT_WN() function.
  1137.  
  1138. Returns          TRUE - If window was drawn successfully.
  1139.  
  1140.                 FALSE - If the window could not be drawn. If this occurs,
  1141.                         it is because the function received invalid
  1142.                         arguments.
  1143.  
  1144.  
  1145.  
  1146.   Windows For Clipper                                               Page 25
  1147.  
  1148.  
  1149. _SWTE_TXT(window, string)
  1150.  
  1151. Synopsis       This function writes a string of text to a window. If the
  1152.                length of the string exceeds the the width of the window,
  1153.                it will be truncated. Each window keeps track of the last
  1154.                row written to. Each time a string is written to a window,
  1155.                the row offset inside the window is advanced to the next
  1156.                line. This is true regardless of the string's length. When
  1157.                the text is written to the last row in a window, all subsequent
  1158.                lines will scroll the window up one row, then write the text.
  1159.  
  1160.                This function will obey the video access method selected.
  1161.  
  1162. Arguments
  1163.                window - Window number returned by the _SINIT_WN() function.
  1164.  
  1165.                string - The string to be written. The string can be in a
  1166.                         variable, or literal.
  1167.  
  1168. Returns          TRUE - If the write was successful.
  1169.  
  1170.                 FALSE - If the write was unsuccessful. If this occurs,
  1171.                         it is because the function received invalid
  1172.                         arguments.
  1173.  
  1174.  
  1175.   Windows For Clipper                                               Page 26
  1176.  
  1177.  
  1178. _SWTE_RECS(window, arg1, [arg2, arg3,.....])
  1179.  
  1180. Synopsis       This function is a specialized form of the write text
  1181.                function. This function takes database field names as it's
  1182.                arguments. All fields specified must be of character type or
  1183.                converted to character type using one of the functions provided
  1184.                by Clipper i.e. STR(), DTOC() etc. At least one field must be
  1185.                specified. After that, 9 others maybe specified. The fields
  1186.                are written in the order specified in the call. If the contents
  1187.                of a field exceeds the window boundaries, the text will be
  1188.                truncated, and all subsequent fields will not be written. 
  1189.                This does not mean the field is truncated in the database 
  1190.                itself, just as output into the window. As in the _SWTE_TXT()
  1191.                function each window keeps track of the last row written to.
  1192.                Each time a set of fields is written to a window, the row
  1193.                offset is advanced to the next line.
  1194.  
  1195.                This function is not limited to just fields. You may specify
  1196.                string constants, or character type memory variables if needed.
  1197.                You may also specify any function as an argument, so long as 
  1198.                the function returns a character type result. 
  1199.  
  1200.                Example :  _SWTE_REC(wn, Company, IF(paid , "Yes", "No"))
  1201.                           Window # ^   ^ Field  ^ Function returning char.
  1202.  
  1203.                        This will display the contents of the field company
  1204.                        and Yes, or No, depending on the value of paid. 
  1205.                        This assumes that company is a character field or 
  1206.                        memory variable, and paid is a logical field or memory
  1207.                        variable.
  1208.  
  1209.          NOTE:
  1210.                The function is limited to combined length of 512 characters.
  1211.                This means that the length of each argument added together
  1212.                can not exceed 512 characters. All fields and memory variables
  1213.                will be displayed until a length of 512 characters is reached.
  1214.                If the combined length exceeds this limitation, the function
  1215.                will fail. 
  1216.  
  1217.                This function will obey the video access method selected.
  1218.  
  1219.  
  1220.  
  1221.   Windows For Clipper                                               Page 27 
  1222.  
  1223.  
  1224. Arguments
  1225.                window - Window number returned by the _SINIT_WN() function.
  1226.  
  1227.                 arg1  - A database field name, memory variable, character
  1228.                         constant, or function returning a character result.
  1229.                         If a field is specified, the database in which the
  1230.                         fields are accessed must be open. If the database 
  1231.                         is not in the current selected area, an ALIAS 
  1232.                         prefix must be used.
  1233.                         Example:   CUSTINFO->COMP_NAME
  1234.                                    ^Alias prefix.
  1235.  
  1236.     [arg2, arg3,....] - Optional arguments. The above applies here also.
  1237.  
  1238. Returns          TRUE - If write was successful.
  1239.  
  1240.                 FALSE - If the write was unsuccessful. If this occurs,
  1241.                         it is because the function received invalid
  1242.                         arguments.
  1243.  
  1244.  
  1245.  
  1246.    Windows For Clipper                                               Page 28
  1247.  
  1248.  
  1249. _SWTE_PTR(window, target row, direction)
  1250.  
  1251. Synopsis       This function will write a pointer in the window specified.
  1252.                Two pointer types are available, please refer to the _SST_PTSL()
  1253.                function reference to determine what the pointer types are. 
  1254.                The pointer color can also be set. This function will determine
  1255.                the current color and use it. Please refer to the _SST_PTCL()
  1256.                function reference to determine how to set the pointer colors.
  1257.  
  1258.                A pointer in a window can be used for several different 
  1259.                reasons. Highlight text as it is being read is one example. 
  1260.                The _WN_DBF() function use the pointer to indicate which 
  1261.                record the user is currently resting on. 
  1262.  
  1263.                If order to use this function here are a few things you must
  1264.                know.  
  1265.  
  1266.                If pointer type 1 is selected, you must prefix all text
  1267.                written to the window with 2 spaces. Pointer type 1 is an
  1268.                arrow that points to the right. It occupies the first 2
  1269.                character positions in a window. You will need to prefix all
  1270.                text written to the window with 2 spaces. This will provide
  1271.                the space required to accommodate the pointer.
  1272.  
  1273.                If pointer type 2 is selected, no extra space is needed. This 
  1274.                pointer is a bounce bar and starts at the first column in the
  1275.                window and fills the entire length of the window. It will not
  1276.                disturb the text that occupies the window. 
  1277.  
  1278.                When calling this function, you must indicate the direction
  1279.                in which the pointer is being moved. If this is the first call
  1280.                to the function and no direction has yet been established, you
  1281.                indicate "N" for none. If you have a pointer at the last row
  1282.                in a window, and wish to move to the pointer to the previous 
  1283.                row, you indicate "U" as the direction. And of course, if you 
  1284.                wish to move the pointer down in a window, you indicate "D".
  1285.  
  1286.                The direction of movement and the target row are used to
  1287.                determine what the function must do to erase the previous
  1288.                pointer written in a window. You should never move the pointer
  1289.                more than one row up or down at a time. If this occurs the
  1290.                function will not be able to remove the previous pointer.
  1291.  
  1292.                You should never select a different pointer type after calling
  1293.                this function for the first time. This will result in a very
  1294.                peculiar looking window. If a window is erased, or has no 
  1295.                pointer in it, you can safely change the pointer type to suit
  1296.                your needs. 
  1297.  
  1298.                If pointer type 2 is selected, the function will use DMA
  1299.                as the video access method. This is not selectable. If 
  1300.                pointer type one is selected, the function will obey the
  1301.                video access method selected.
  1302.  
  1303.  
  1304.  
  1305.   Windows For Clipper                                               Page 29
  1306.  
  1307.  
  1308. Arguments
  1309.                window - Window number returned by the _SINIT_WN() function.
  1310.  
  1311.            target row - the row the pointer will be written in. The row 
  1312.                         is relative to the window dimensions. That is, row
  1313.                         0 represents the first writable row in a window.
  1314.                         
  1315.             direction - the direction in which the pointer will be moved.
  1316.                         valid responses are: "U", "D", and "N".
  1317.  
  1318. Returns          TRUE - If pointer written succesfully.
  1319.  
  1320.                 FALSE - If pointer not written successfully. If this occurs
  1321.                         it is usually because the function received an 
  1322.                         invalid argument.
  1323.  
  1324.  
  1325.  
  1326.  
  1327.    Windows For Clipper                                               Page 30
  1328.  
  1329.  
  1330. _SCLS_WN(window)
  1331.  
  1332. Synopsis       This function will clear the contents of a window. When
  1333.                the window is cleared, the row offset is reset to row 1.
  1334.                If a vertical scroll value has previously been set, it
  1335.                will not be changed. The vertical scroll value must be
  1336.                explicitly changed by making a call to the _SCRL_VERT()
  1337.                function. Please refer to the _SCRL_VERT() functions 
  1338.                synopsis for an explanation of this function.
  1339.  
  1340.                If you changed the color by calling the _SST_WNCL() function
  1341.                prior to calling this function, the windows content color
  1342.                will be changed to that specified when this function is
  1343.                called. This will not affect the border color of the window.
  1344.                
  1345.                This function will obey the video access method selected.
  1346.  
  1347. Arguments
  1348.                window - Window number returned by the _SINIT_WN() function.
  1349.  
  1350. Returns          TRUE - If the window was cleared successfully.
  1351.  
  1352.                 FALSE - If the window clear was unsuccessful. If this
  1353.                         occurs, it is because the function received invalid
  1354.                         arguments.
  1355.  
  1356.  
  1357.  
  1358.    Windows For Clipper                                               Page 31
  1359.  
  1360.  
  1361. _SCRL_VERT(window, number of characters)
  1362.  
  1363. Synopsis       This function will cause any text written to a window to
  1364.                scroll left or right. The scroll vertical function will
  1365.                not affect any text written in the window, prior to calling
  1366.                the function. All text written to a window after this function
  1367.                is called will scroll in the appropriate direction. To 
  1368.                reset vertical scrolling to "No Scroll", a value of 0 should
  1369.                be passed to the function.
  1370.  
  1371.  
  1372. Arguments
  1373.                window - Window number returned by the _SINIT_WN() function.
  1374.  
  1375.  number of characters - The number of characters to scroll. If left scroll
  1376.                         is desired, a negative value is supplied. If
  1377.                         right scroll is desired a positive value is
  1378.                         supplied. To reset for "No Scroll", a 0 is 
  1379.                         supplied.
  1380.  
  1381.                                Example -  _SCRL_VERT(window, -5)
  1382.                                  This will scroll text left 5 characters.
  1383.  
  1384.                                Example -  _SCRL_VERT(window, 5)
  1385.                                  This will scroll text right 5 characters.
  1386.  
  1387. Returns          TRUE - If the scroll was successful.
  1388.  
  1389.                 FALSE - If the scroll was unsuccessful. If this occurs,
  1390.                         it is because the function received invalid
  1391.                         arguments.
  1392.  
  1393.  
  1394.  
  1395.    Windows For Clipper                                               Page 32 
  1396.  
  1397. _SCRL_HORZ(window, number of lines)
  1398.  
  1399. Synopsis       This function will cause any text written to a window to
  1400.                scroll up or down. If a scroll up request is made, the
  1401.                top line in the window will be lost and all lines below it
  1402.                will move up. Likewise, if a scroll down request is made, the
  1403.                bottom row in the window will be lost and all lines above it
  1404.                will be moved down.
  1405.  
  1406.                When scrolling up, the cursor offset in the window is reset
  1407.                to the first row of the window. When scrolling down, the
  1408.                cursor offset in the window is reset to the last row of the
  1409.                window.
  1410.  
  1411. Arguments
  1412.                window - Window number returned by the _SINIT_WN() function.
  1413.  
  1414.       number of lines - The number of lines to scroll. If an up scroll
  1415.                         is desired, a positive value is supplied. If a
  1416.                         down scroll is desired a negative value is
  1417.                         suppplied.
  1418.  
  1419.                                Example -  _SCRL_HORZ(window, 5)
  1420.                                  This will scroll text up 5 lines.
  1421.  
  1422.                                Example -  _SCRL_HORZ(window, -5)
  1423.                                  This will scroll text down 5 lines.
  1424.  
  1425. Returns          TRUE - If the scroll was successful.
  1426.  
  1427.                 FALSE - If the scroll was unsuccessful. If this occurs,
  1428.                         it is because the function received invalid
  1429.                         arguments.
  1430.  
  1431.  
  1432.  
  1433.    Windows For Clipper                                               Page 33
  1434.  
  1435.  
  1436. _SWNERASE(window)
  1437.  
  1438. Synopsis       This function erases a window from the screen. If stacked
  1439.                (tiled) windows are on the screen, the topmost window must
  1440.                be erased first. All subsequent erasures must be done in
  1441.                the same manner.
  1442.  
  1443.                This function will obey the video access method selected.
  1444.  
  1445. Arguments
  1446.                window - Window number returned by the _SINIT_WN() function.
  1447.  
  1448. Returns          TRUE - If the erasure was successful.
  1449.  
  1450.                 FALSE - If the erasure was unsuccessful. If this occurs,
  1451.                         it is because the function received invalid
  1452.                         arguments.
  1453.  
  1454.  
  1455.  
  1456.    Windows For Clipper                                               Page 34
  1457.  
  1458.  
  1459. _WNSAVE(window, filename)
  1460.  
  1461.  
  1462. Synopsis       This is a special purpose function that allows the text stored
  1463.                in a window to be saved in a Clipper MEM file. The complete
  1464.                contents of a window are saved including the color of the 
  1465.                window contents. 
  1466.  
  1467.                If the MEM filename specified exists, the contents of the MEM
  1468.                file will be lost and the new information stored in it. 
  1469.  
  1470.                This function will obey the video access method selected.
  1471.  
  1472. Arguments
  1473.                window - Window number returned by the _SINIT_WN() function.
  1474.  
  1475.              filename - A valid DOS filename. If an extension is not specified,
  1476.                         WFC will be used as the default. The filename argument
  1477.                         must be delimited with quote marks. 
  1478.  
  1479.                         Example : _WNSAVE(wn, "TEST")
  1480.  
  1481. Returns          TRUE - If the function was successful in reading and saving
  1482.                         the windows contents. 
  1483.  
  1484.                 FALSE - If the function was not successful in reading and
  1485.                         saving the windows contents. This return usually 
  1486.                         occurs if the the target window is not on the screen. 
  1487.  
  1488.  
  1489.  
  1490.    Windows For Clipper                                               Page 35
  1491.  
  1492.  
  1493. _WNRESTORE(window, filename)
  1494.  
  1495.  
  1496. Synopsis       This is a special purpose function that restores the contents
  1497.                of a window that was previously saved by the _WNSAVE()
  1498.                function. 
  1499.  
  1500.                The target window must be on the screen and the same size 
  1501.                as the original window the _WNSAVE() function used to save
  1502.                the information. If the window size differs, unpredictable
  1503.                results may occur.
  1504.  
  1505. Arguments
  1506.                window - Window number returned by the _SINIT_WN() function.
  1507.  
  1508.              filename - A valid DOS filename. If an extension is not specified,
  1509.                         WFC will be used as the default. The filename argument
  1510.                         must be delimited with quote marks. 
  1511.  
  1512.                         Example : _WNRESTORE(wn, "TEST")
  1513.  
  1514. Returns          TRUE - If the function was successful in writing the saved 
  1515.                         contents back to the window. 
  1516.  
  1517.                 FALSE - If the function was not successful in writing the
  1518.                         contents back to the window. This usually occurs if
  1519.                         the target window is not on the screen, or the 
  1520.                         indicated file can not be found. 
  1521.  
  1522.  
  1523.  
  1524.  
  1525.    Windows For Clipper                                               Page 36
  1526.  
  1527.  
  1528. _WNGETBUF(window, buffer)
  1529.  
  1530.  
  1531. Synopsis       This is a special purpose function that reads the contents
  1532.                of a window and stores it into a buffer. This is the low 
  1533.                level function used by the _WNSAVE function.
  1534.  
  1535.                The buffer must be initialize to a size that will hold the
  1536.                contents of the window. The buffer format is as follows:
  1537.  
  1538.                1st byte .... character in the first column and first row in
  1539.                              the window.
  1540.                2nd byte .... color attribute of the specified window. 
  1541.  
  1542.                All subsequent bytes follow this same pattern. The size of 
  1543.                window buffer required can be calculated as follows:
  1544.  
  1545.                buffer size = (number of rows * number of columns) * 2
  1546.  
  1547.                Example of buffer initialization:
  1548.  
  1549.                buffer = SPACE((numrow * numcols) * 2)
  1550.                                     or
  1551.                buffer = SPACE((_SWN_ROW(window) * _SWN_COL(window)) * 2)
  1552.  
  1553.                If the buffer space is not large enough, unpredictable results
  1554.                will occur.
  1555.  
  1556.                This function will obey the video access method selected.
  1557.  
  1558. Arguments
  1559.                window - Window number returned by the _SINIT_WN() function.
  1560.  
  1561.                buffer - A Clipper initialized memory variable that will be
  1562.                         used to store the contents of the window.
  1563.  
  1564. Returns          TRUE - If the function was successful in storing the window
  1565.                         contents in the buffer.
  1566.  
  1567.                 FALSE - If the function was unsuccessful in store the window
  1568.                         contents in the buffer. This will usually occur if
  1569.                         the target window is not on the screen, or invalid
  1570.                         arguments were received by the function.
  1571.  
  1572.  
  1573.  
  1574.  
  1575.    Windows For Clipper                                               Page 37
  1576.  
  1577.  
  1578. _WNPUTBUF(window, buffer)
  1579.  
  1580.  
  1581. Synopsis       This is a special purpose function that writes the contents
  1582.                of a buffer created by the _WNGETBUF() function, to a window.
  1583.  
  1584.                The target window should be the same size as the target window
  1585.                that was used to create the buffer.
  1586.  
  1587.                A standard string can not be written to a window with this
  1588.                function. The function expects the buffer to have the same
  1589.                format as that created by the _WNGETBUF() function. Please
  1590.                refer to the _WNGETBUF() fucntion for further information
  1591.                on the buffer format.
  1592.  
  1593.                This function will obey the video access method selected.
  1594.  
  1595. Arguments
  1596.                window - Window number returned by the _SINIT_WN() function.
  1597.  
  1598.                buffer - A Clipper initialized memory variable whose contents
  1599.                         was placed there by the _WNGETBUF() function.
  1600.  
  1601. Returns          TRUE - If the function was successful in writing the contents
  1602.                         of the buffer to a window.
  1603.  
  1604.                 FALSE - If the function was unsuccessful in writing the buffer
  1605.                         contents in the window. This will usually occur if
  1606.                         the target window is not on the screen, or invalid
  1607.                         arguments were received by the function.
  1608.  
  1609.  
  1610.  
  1611.    Windows For Clipper                                               Page 38
  1612.  
  1613.  
  1614. _WN_DBF(window, "field" [,"field","field".....])
  1615.  
  1616.  
  1617. Synopsis       This is a special purpose function that allows a database
  1618.                to be viewed through a window.  The function takes control
  1619.                of the keyboard and provides maneuverability through the
  1620.                database. Record selection can be accomplished using this
  1621.                function. All an operator has to do is point to the record
  1622.                desired and press return.
  1623.  
  1624.                The function requires the following:
  1625.  
  1626.                1. A valid window number that has been initialized and drawn
  1627.                   by the _SINIT_WN(), and _SDRW_WN() functions respectively.
  1628.  
  1629.                2. The database being windowed must be the selected database
  1630.                   in use. Suppose you have two databases open and you wish to
  1631.                   display field information from area 1. This section of code
  1632.                   would be required for the function to operate properly:
  1633.  
  1634.                *** open files
  1635.                SELECT 1
  1636.                USE DATA1
  1637.                SELECT 2
  1638.                USE DATA2
  1639.                *** window view of DATA1
  1640.                SELECT 1
  1641.                _WN_DBF(window, "customer", "address", "city", "state", "zip")
  1642.  
  1643.                This will display fields from the current area with the above
  1644.                field names. In the above example, all field names specified
  1645.                are character type fields. The quotes around the field names
  1646.                are required. There are exceptions to this, which are
  1647.                documented below. 
  1648.  
  1649.                The type of pointer used by this function is selectable. Two
  1650.                pointer types are available. Please refer to the _SST_PTSL()
  1651.                function for more information. 
  1652.  
  1653.                Character and logical fields are directly supported by the 
  1654.                function. Logical fields do not display as .T. or .F., instead
  1655.                they  are  displayed as 'Y' for  true (.T.) and, 'N' for 
  1656.                false (.F.). To indicate one of these fields simply enclose
  1657.                the field name in quotes.
  1658.  
  1659.                Expressions are allowed, as long as the result is a character
  1660.                or character string. Numeric and date fields can be accessed 
  1661.                by this function only if a method/function of converting the
  1662.                field to a character or character string is provided. The
  1663.                technique to accomplish this is usually another function call.
  1664.                The _WN_DBF() function will implement the method/function 
  1665.                specified through macro expansion. 
  1666.  
  1667.  
  1668.  
  1669.  
  1670.    Windows For Clipper                                               Page 39
  1671.  
  1672.  
  1673.                Clarification as to a method/function. 
  1674.                --------------------------------------
  1675.  
  1676.                A method is an action that is not strictly categorized as 
  1677.                a function but still results in a character or character
  1678.                string result. This can best be describe in the following
  1679.                line of code:
  1680.  
  1681.                IF field1 and field2 are character type fields:
  1682.  
  1683.                "field1 + field2" <--- This is called concatenation.
  1684.  
  1685.                As can be seen, this will still result in a character or 
  1686.                character string. There may be other methods, but this
  1687.                should serve as a good example. 
  1688.  
  1689.                Functions should not need clarification. For those that do
  1690.                not fully understand what a function is or does, most 
  1691.                programming reference works that deal with the 'C' language
  1692.                can give you a complete description. It is beyond the scope
  1693.                of this reference to do so.
  1694.  
  1695.                The handling of data conversion from numeric to character
  1696.                and date to character is implemented in a fashion to 
  1697.                allow more flexibility to the programmer. Clipper provides
  1698.                a good set of conversion routines but they are not the only
  1699.                routines available. The design of this function allows the
  1700.                programmer to specify the method/function to use. These 
  1701.                methods/functions can be Clipper internal routines, routines
  1702.                of your own design, or routines acquired by you. Due to this
  1703.                flexibility, certain precautions must be taken. 
  1704.  
  1705.                Precautions to be aware of:
  1706.  
  1707.                1. If the method/function is not a Clipper internal routine, 
  1708.                   it is suggested that an 'EXTERNAL method/function name'
  1709.                   declaration line be placed somewhere within your
  1710.                   application to insure it is included during the link phase. 
  1711.  
  1712.                   EXAMPLE: EXTERNAL LOGTOCHR
  1713.  
  1714.                2. The programmer should fully understand what the return 
  1715.                   result should be from any method/function used for data
  1716.                   conversion. The method/function MUST return a character or 
  1717.                   character string value.
  1718.  
  1719.                3. The method/function can not be a procedure. Procedures
  1720.                   are not supported. 
  1721.  
  1722.  
  1723.  
  1724.    Windows For Clipper                                               Page 40
  1725.  
  1726.  
  1727.                4. You must follow the section describing the syntactical
  1728.                   requirements found below. 
  1729.  
  1730.                The above describes the data conversion methods using numeric
  1731.                and date fields as a reference. Be aware that data conversion
  1732.                is not strickly limited to those field types. Although the 
  1733.                above discussion does apply to the numeric and date field 
  1734.                types, you may also provide a method/function for conversion
  1735.                of logical fields or special formating of character fields.
  1736.                For instance, if you require a more verbose display of 
  1737.                logical fields than what is supplied by this function, you
  1738.                may create your own function for this purpose and specify it
  1739.                as the data conversion method/function to use. The bottom 
  1740.                line is this; Any method/function that returns a character 
  1741.                or character string result should work.
  1742.  
  1743.                Syntactical requirements for data conversion.
  1744.                ---------------------------------------------
  1745.  
  1746.                Two methods are available if data conversion is to be used. 
  1747.                Please keep in mind that character and logical type fields
  1748.                are directly supported by this function.
  1749.  
  1750.                In the following descriptions, 'wn' refers to a valid 
  1751.                window number returned by the '_SINIT_WN()' function, 
  1752.                'name' refers to a character field and 'number' refers to
  1753.                a numeric field.
  1754.  
  1755.  
  1756.                         Method 1.
  1757.                         ---------
  1758.                         This is called the 'DIRECT' method. It is preferrable
  1759.                         if you require readable code at the expense of 
  1760.                         flexibility.
  1761.  
  1762.                            Example: 
  1763.  
  1764.                                 rec = _WN_DBF(wn, "name", "STR(number)")
  1765.                                                          ^^^^^^^^^^^^^
  1766.                         In this example, the STR() function will be used for
  1767.                         data conversion. Note the quotes surrounding the 
  1768.                         parameter; these quotes are required. If the quotes
  1769.                         are not present, the application will experience a
  1770.                         type conflict error. This is the same method used 
  1771.                         for direct support of the character and logical field
  1772.                         types. The difference being, a function is part of the 
  1773.                         quoted parameter.
  1774.                         
  1775.  
  1776.  
  1777.  
  1778.    Windows For Clipper                                               Page 41
  1779.  
  1780.  
  1781.                         Method 2
  1782.                         --------
  1783.                         This is called the 'INDIRECT' method. It is preferable
  1784.                         if you require flexibility at the expense of 
  1785.                         readability.
  1786.  
  1787.                         Example:
  1788.                                 memvar = "STR(number)"
  1789.                                 rec = _WN_DBF(wn, "name", memvar)
  1790.  
  1791.                         In this example, the STR() function will be used for
  1792.                         data conversion. Note that quotes do not surround the
  1793.                         parameter containing the method/function string. If
  1794.                         quotes are placed around the memory variable 'memvar', 
  1795.                         no error will occur, the function will simply display
  1796.                         the contents of the memory variable in the window.
  1797.                            
  1798.  
  1799.                Parameter checking is at a minimum in this function. The
  1800.                programmer must bear most of the responsibility to insure 
  1801.                the proper parameter values are passed. The function does
  1802.                check the parameters passed to it, and these parameters must
  1803.                be passed in sequence. The following construct would be
  1804.                invalid:
  1805.  
  1806.                recs = _WN_DBF(wn1, "customer", ,"address", "city")
  1807.                                     (missing ^ parameter)
  1808.  
  1809.                If parameters were passed as above, unpredictable results may
  1810.                occur. This function will try to recover and provide function
  1811.                integrity. This is not guaranteed. 
  1812.  
  1813.                As of this writing, you cannot specify a scope with this
  1814.                function. Meaning that this construct would be invalid:
  1815.  
  1816.                _WN_DBF(window, "field1", "field2") for city = "ATLANTA"
  1817.  
  1818.                You can set a filter, and the function will respect said
  1819.                filter, until such time as it is removed. If a filter is set,
  1820.                a delay may be detected when moving from one record to another.
  1821.                This delay is not caused by the _WN_DBF() function, but the
  1822.                filter command itself, as it moves through the database
  1823.                trying to decide if the record qualifies. It is quite possible
  1824.                that no records pass the filter, therefore no field information
  1825.                will be displayed in the window.
  1826.  
  1827.                It is not necessary that the window be the same width or wider
  1828.                than the field information that will be written. If the field
  1829.                information is wider than the window, it will be truncated to
  1830.                fit the window. The information in the database is not
  1831.                effected. The field information is truncated for writing to
  1832.                the screen only. The total combined length of all fields 
  1833.                specified can not exceed 512 characters. This restriction is
  1834.                the same as the _SWTE_RECS() function.
  1835.  
  1836.  
  1837.  
  1838.    Windows For Clipper                                               Page 42
  1839.  
  1840.  
  1841.                Maneuvering through the database is accomplished through the
  1842.                use of the special keys on the numeric key pad. The "Up", and
  1843.                "Down" arrow keys allow moving from record to record. If the
  1844.                "Up" arrow key is pressed, the database record pointer will
  1845.                be moved to the previous record. If the "Down" arrow key is
  1846.                pressed, the database record pointer will be moved to the
  1847.                next record. Depending on the pointer position in the window,
  1848.                the field information may be scrolled up or down, whichever
  1849.                is appropriate. The "Left" and "Right" arrow keys allow panning
  1850.                left or right through the field information specified. If
  1851.                the "Left" arrow key is pressed, the field on the left side
  1852.                of the window will be scrolled off the screen and all other
  1853.                field information will be shifted to the left. Any field
  1854.                information on the right that was not visible, can now be
  1855.                seen. Pressing the "Right" arrow key has the opposite effect.
  1856.                The "Home" and "End" keys move the record pointer to the first
  1857.                and last record displayed in a window. The "^Home" and "^End"
  1858.                (^ = Control) keys will move the record pointer to the top or
  1859.                bottom of the database respectively. The "PgUp" and "PgDn"
  1860.                down keys allowing paging through the database. The page 
  1861.                size is dependant on the size of the window. If you have 
  1862.                a window consisting of 10 rows, then the page size will 
  1863.                be 10. If a window consists of 5 rows, then the page size
  1864.                will be 5 etc. If a vertical scroll has occurred, it remains
  1865.                in effect. The movement through the database, regardless 
  1866.                of the key pressed, will maintain the current scroll setting.
  1867.                
  1868.  
  1869.                Record selection can be accomplished by pressing the enter key
  1870.                after pointing to the desired record or, if no record is desired
  1871.                pressing the ESCape key will cause the function to return a
  1872.                0. It is up to the calling process to take appropriate action
  1873.                depending on the return value of this function.
  1874.  
  1875. Arguments
  1876.                window - Window number returned by the _SINIT_WN() function.
  1877.  
  1878.               "field" - Field or data conversion method/function name to
  1879.                         display. Please refer to the above text for an 
  1880.                         explaination of data conversion techniques.
  1881.  
  1882. [,"field","field"...] - Up to 9 more fields or data conversion 
  1883.                         methods/functions may be specified for a total
  1884.                         of 10, whose combined length does not exceed 512
  1885.                         characters.
  1886.  
  1887. Return  Record number - The function will return the record number of the
  1888.         or 0            record currently being pointed to if the return
  1889.                         key is pressed, or 0 if the escape key is pressed.
  1890.  
  1891.  
  1892.  
  1893.    Windows For Clipper                                               Page 43
  1894.  
  1895.  
  1896.                                Other Functions
  1897.                                ---------------
  1898.  
  1899.  
  1900.  
  1901.   _BIGSTR(String, col, row [, color code string, VAM])
  1902.  
  1903.  
  1904. Synopsis       This function will write BIG strings to the screen. The size
  1905.                of each character is 8 columns wide and 8 rows long. This 
  1906.                function can be used to create attractive startup screens 
  1907.                etc. 
  1908.  
  1909.                Maximum safe string size is 10 characters. This is due to the
  1910.                size of each character that is printed. The color control
  1911.                string and VAM are optional. If not specified, the default
  1912.                will be white characters as the color and, DMA as the video
  1913.                access.
  1914.  
  1915. Arguments
  1916.                string - The string to be printed.
  1917.  
  1918.                   col - starting column coordinates. Adjust the starting 
  1919.                         column coordinates or the string size to insure 
  1920.                         the character will not exceed the screen boundaries.
  1921.  
  1922.                   row - starting row coordinates. You should not specify a 
  1923.                         row coordinate higher than 16. If you do, the
  1924.                         characters will exceed the screen boundaries.
  1925.  
  1926.     color code string - Character variable containing a string representing
  1927.                         the color code. The color code string takes the
  1928.                         following form.
  1929.                             <foreground/intensity/blinking>
  1930.                         You may use any character to separate the
  1931.                         color code string, but a slash is recommended.
  1932.  
  1933.              NOTE:      Only the foreground color is specified as a parameter
  1934.                         to this function. If you wish to set the background
  1935.                         color to something other than White on Black, use
  1936.                         the Clipper SET COLOR TO statement.
  1937.                         
  1938.                         The following are the codes used for color selection.
  1939.  
  1940.                                  A        ==        BLACK
  1941.                                  B        ==        BLUE
  1942.                                  G        ==        GREEN
  1943.                                  C        ==        CYAN
  1944.                                  R        ==        RED
  1945.                                  M        ==        MAGENTA
  1946.                                  O        ==        BROWN
  1947.                                  W        ==        WHITE
  1948.                                  L        ==        BLINKING
  1949.                                  H        ==        HIGH INTENSITY
  1950.  
  1951.                         Refer to the _WN_DBF() function for examples of
  1952.                         specifying a color code string. 
  1953.  
  1954.                   VAM - Video access method to use. Valid arguments are:
  1955.                         1. For direct memory access.
  1956.                         0. For BIOS access.
  1957.  
  1958.  
  1959.  
  1960.   Windows For Clipper                                               Page 44
  1961.  
  1962.  
  1963. Returns          TRUE - If the function was successful in writing the string.
  1964.  
  1965.                 FALSE - If the function was unsuccessful in writing the string.
  1966.                         This will occur if the function receives invalid 
  1967.                         arguments.
  1968.  
  1969.  
  1970.  
  1971.    Windows For Clipper                                               Page 45
  1972.  
  1973.  
  1974.   _NEWCOLOR(start col, start row, end col, end row, color code string)
  1975.  
  1976.  
  1977. Synopsis       This function will change the color in the specified area   
  1978.                of the screen. It will not disturb any text that may occupy
  1979.                the target area of the screen.
  1980.  
  1981.                This function uses only DMA as the access method. 
  1982.  
  1983. Arguments
  1984.             start col - The column in which to start the color change.
  1985.  
  1986.             start row - The row in which to start the color change.
  1987.  
  1988.               end col - The column in which the color change will end.
  1989.  
  1990.               end row - The row in which the color change will end.
  1991.  
  1992.     color code string - Character variable containing a string representing
  1993.                         the color code. The color code string takes the
  1994.                         following form:
  1995.                             <background/foreground/intensity/blinking>
  1996.                         You may use any character to separate the
  1997.                         color code string, but a slash is recommended.
  1998.  
  1999.                         The following are the codes used for color selection.
  2000.  
  2001.                                  A        ==        BLACK
  2002.                                  B        ==        BLUE
  2003.                                  G        ==        GREEN
  2004.                                  C        ==        CYAN
  2005.                                  R        ==        RED
  2006.                                  M        ==        MAGENTA
  2007.                                  O        ==        BROWN
  2008.                                  W        ==        WHITE
  2009.                                  L        ==        BLINKING
  2010.                                  H        ==        HIGH INTENSITY
  2011.  
  2012.                         Refer to the _WN_DBF() function for examples of
  2013.                         specifying a color code string.
  2014.  
  2015. Returns          TRUE - If the function changed the area as specified.
  2016.  
  2017.                 FALSE - If the function could not change the area as specified.
  2018.                         This usually occurs if the function received invalid
  2019.                         arguments.
  2020.  
  2021.